Modern personal computers (PC) have benefited from many technological innovations over the past decades. Performance gains have been achieved by increasing processor speed, as well as increasing data transfer speed over input-output (I/O) busses. The progress in I/O speeds has largely come about through the implementation of new interface standards, although backwards compatibility has required that many legacy interfaces still be included on PCs.
In the “x86” processor architecture, the original standard I/O interfaces included serial and parallel ports for external peripherals, the Industry Standard Architecture (ISA) bus for plug-in cards, and the Integrated Drive Electronics (IDE) interface for floppy disk and hard drives. Modern PCs may still contain some of these interfaces, but there has been a steady transition to Universal Serial Bus (USB) and IEEE 1394 for external peripherals, Peripheral Component Interconnect (PCI) bus for cards, and Enhanced IDE and AT Attachment (ATA) hard drives. Other specialized interfaces have been developed for various hardware and environments, such as Personal Computer Memory Card International Association (PCMCIA) devices for portable computers and Advanced Graphic Processor (AGP) bus interfaces for video cards.
Even with these advances in computer I/O standards, the operating system may still need access to a well-known, generic interface. These generic interfaces represent a lowest common denominator that can safely be used under a number of circumstances. For example, some versions of the Windows™ and Unix™ kernels allow access to the operating system via a terminal device. Historically, these terminal devices were “dumb” terminals that connected to a serial port of the computer. Certain critical tasks such as kernel message logs can be directed to this terminal (also referred to as the “console”). These terminals may be used for system inputs, such as providing a login for user access or inputs to a kernel debugger.
A dumb terminal is usually connected to a Universal Asynchronous Receiver-Transmitter (UART) of the host machine. The UART sends and receives data over serial transmission lines. The UART serializes outgoing data and assembles incoming serial data into bytes and places those bytes in a buffer. Although many commonly used UARTs communicate asynchronously on the transmission lines, similar devices exist that communicate synchronously, e.g., where both communicating devices are synched to a clock signal.
An operating system may also require other lowest common denominator devices, such as keyboards, mice, and displays. In a data center environment it may not be practical to provide each of these actual devices for each computer, along with the associated connectors and power supplies that may be required by such devices. Including additional hardware with the computing systems increases costs, space required, and power consumption. In many densely packed data centers, all three of these factors are at a premium. Therefore, it is desirable to provide a way to provide legacy device access on a computer without increasing hardware size, cost, and power consumption.